package com.server.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.server.authority.Login;
import com.server.common.base.ProjectInfor;
import com.server.common.base.SessionData;
import com.server.service.ITestQuestionsManageService;
import com.server.web.DataVector;
import com.server.web.JSONSerielizer;
import com.server.web.OutputUtil;
import com.server.web.RequestInput;
import com.server.web.SessionUtil;

/**
 * @author wufeng
 * @date 创建时间：2016年7月14日 下午4:41:59 
 */
@Controller
@RequestMapping("question")
public class TestQuestionsManageController {
	@Autowired
	private ITestQuestionsManageService testQuestionsManageService;
	/**
	* 试题管理列表页面
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月10日 上午10:41:03 
	* @return  
	*/
	@Login
	@RequestMapping("")
	public ModelAndView listMv(){
		ModelAndView mv = new ModelAndView("testQuestions/testQuestion_list");
		mv.addObject("rootPath",ProjectInfor.ROOT_PATH);
		return mv;
	}
	/**
	* 获取试题列表
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月10日 下午4:25:01 
	* @return  
	*/
	@RequestMapping("listData")
	public void getList(HttpServletRequest request, HttpServletResponse response){
		DataVector<Map<String, Object>> listData =  testQuestionsManageService.
				getList(new RequestInput(request));
		OutputUtil.returnGridData(response, listData.getCount(), JSONSerielizer.toJson(listData.getList(), null, null));
	}
	/**
	* 增加试题页面
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月10日 下午4:25:19 
	* @return  
	*/
	@RequestMapping("addMv")
	public ModelAndView add(){
		ModelAndView mv = new ModelAndView("testQuestions/addNewTest");
		mv.addObject("rootPath",ProjectInfor.ROOT_PATH);
		return mv;
	}
	
	/**
	* 增加试题
	* @author  作者 : wufeng
	* @date 创建时间：2016年7月18日 下午3:49:25  
	* @return  
	*/
	@RequestMapping("add")
	public void add(HttpServletRequest request,
			HttpServletResponse response){
		String json = request.getParameter("data");
		String user = SessionUtil.getStringAttri(request, SessionData.nameKey_mng);
		Map<String, Object> map = new HashMap<String, Object>();
		map = JSONSerielizer.toMap(json);
		boolean isSuccess = testQuestionsManageService.add(map, user);
		OutputUtil.returnSuccess(response, isSuccess);
	}
	
	
	/**
	* 更改试题页面
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月11日 下午5:04:39 
	* @return  
	*/
	@RequestMapping("updateMv/{type}/{id}")
	public ModelAndView updateMv(@PathVariable String type,@PathVariable Integer id){
		ModelAndView mv = new ModelAndView("testQuestions/updateTest");
		mv.addObject("rootPath", ProjectInfor.ROOT_PATH);
		mv.addObject("testId", id);
		mv.addObject("type", type);
		return mv;
	}
	
	/**
	* 获取试题的信息
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月12日 上午10:41:51 
	* @return  
	*/
	@RequestMapping("testInfo/{testId}")
	public void testInfo(HttpServletResponse response,
			HttpServletRequest request, @PathVariable String testId){
		Map<String, Object> map = testQuestionsManageService.getMap(testId);
		String json = JSONSerielizer.toJson(map, null, null);
		OutputUtil.returnString(response, json);
	}
	/**
	* 更改试题
	* @author  作者 : wufeng
	* @date 创建时间：2016年7月18日 下午4:19:27 
	* @return  
	*/
	@RequestMapping("update/{id}")
	public void update(HttpServletRequest request, HttpServletResponse response,
			@PathVariable String id){
		boolean isSuccess = false;
		String json = request.getParameter("data");
		String user = SessionUtil.getStringAttri(request, SessionData.nameKey_mng);
		Map<String, Object> map = JSONSerielizer.toMap(json);
		isSuccess = testQuestionsManageService.update(map, user, id);
		OutputUtil.returnSuccess(response, isSuccess);
	}
	/**
	* 删除试题
	* @author  作者 : wufeng
	* @date 创建时间：2016年7月18日 下午4:32:43 
	* @return  
	*/
	@RequestMapping("delete")
	public void delete(HttpServletRequest request,
			HttpServletResponse response){
		boolean isSuccess = true;
		String user = SessionUtil.getStringAttri(request, SessionData.nameKey_mng);
		String str = request.getParameter("data");
		String []id = str.split(",");
		Map<String, Object> map = new HashMap<String, Object>();
		boolean errorInfo = false;
		boolean isUse = false;
		for (String string : id) {
			if(testQuestionsManageService.isUse(string)){
				isUse = true;
				errorInfo = false;
				isSuccess = false;
			}else if (testQuestionsManageService.isRight(string, user)) {
				isSuccess = testQuestionsManageService.delete(string);
			}else { 
				errorInfo = true;
				isSuccess = true;
			}
		}
		map.put("isSuccess", isSuccess);
		map.put("errorInfo", errorInfo);
		map.put("isUse", isUse);
		String mapJson = JSONSerielizer.toJson(map, null, null); 
		OutputUtil.returnString(response, mapJson);
	}
	
	/**
	* 获取所有课程列表
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月11日 下午4:43:25 
	* @return  
	*/
	@RequestMapping("courseList")
	public void getCourseList(HttpServletRequest request, HttpServletResponse response){
		DataVector<Map<String, Object>> reList = testQuestionsManageService.getCourseLisit(new RequestInput(request));
		OutputUtil.returnGridData(response, reList.getCount(), JSONSerielizer.toJson(reList.getList(), null,null));
	}
	
	/**
	* 查看试题页面
	* @author  作者 : wufeng
	* @date 创建时间：2016年8月11日 下午4:44:47 
	* @return  
	*/
	@RequestMapping("checkMv/{id}")
	public ModelAndView chckMv(@PathVariable Integer id){
		ModelAndView mv = new ModelAndView("testQuestions/testInfo");
		mv.addObject("rootPath", ProjectInfor.ROOT_PATH);
		mv.addObject("testId", id);
		return mv;
	}
}
